home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Turnbull China Bikeride
/
Turnbull China Bikeride - Disc 2.iso
/
STUTTGART
/
LANG
/
SCHEME
/
GNU
/
SCM4E1
/
!Scm
/
slib
/
README
< prev
next >
Wrap
Text File
|
1994-03-07
|
7KB
|
155 lines
This directory contains the distribution of the Scheme Library slib2a.
Slib conforms to Revised^4 Report on the Algorithmic Language Scheme
and the IEEE P1178 specification. Slib supports Unix and similar
systems, VMS, and MS-DOS.
The maintainer can be reached at jaffer@ai.mit.edu or
Aubrey Jaffer, 84 Pleasant St., Wakefield MA 01880.
MANIFEST
`README' is this file. It contains a MANIFEST, INSTALLATION
INSTRUCTIONS, and proposed coding standards.
`ChangeLog' documents changes to slib.
`slib.texi' has documentation on library packages in TexInfo format.
`Template.scm' Example configuration file. Copy and customize to
reflect your system.
`chez.init' is a configuration file for Chez Scheme.
`elk.init' is a configuration file for ELK 2.1
`gambit.init' is a configuration file for Gambit Scheme.
`macscheme.init' is a configuration file for MacScheme.
`mitscheme.init' is a configuration file for MIT Scheme.
`mitcomp.pat' is a patch file which adds definitions to SLIB files
for the MitScheme compiler.
`scheme2c.init' is a configuration file for DEC's scheme->c.
`scheme48.init' is a configuration file for Scheme48.
`t3.init' is a configuration file for T3.1 in Scheme mode.
`vscm.init' is a configuration file for VSCM.
`require.scm' has code which allows system independent access to
the library files.
`format.scm' has Common-Lisp style format.
`formatst.scm' has code to test format.scm
`pp.scm' has pretty-print.
`ppfile.scm' has pprint-file and pprint-filter-file.
`obj2str.scm' has object->string.
`strcase.scm' has functions for manipulating the case of strings.
`genwrite.scm' has a generic-write which is used by pp.scm,
pp2str.scm and obj2str.scm
`stdio.scm' has printf, fprintf, and sprintf compatible with C.
`lineio' has line oriented input/output functions.
`debug.scm' has qp, a printer save for circular structures, tracef
and untracef for tracing function execution, and break and
continue.
`test.scm' has routines useful for testing and reporting problems.
`strport.scm' has routines for string-ports.
`alist.scm' has functions accessing and modifying association lists.
`hash.scm' defines hash, hashq, and hashv.
`hashtab.scm' has hash tables.
`logical.scm' emulates 2's complement logical operations.
`random.scm' has random number generator compatible with Common Lisp.
`randinex.scm' has inexact real number distributions.
`prime.scm' has prime? and factor.
`charplot.scm' has procedure for plotting on character screens.
`plottest.scm' has code to test charplot.scm.
`tek40.scm' has routines for Tektronix 4000 series graphics.
`tek41.scm' has routines for Tektronix 4100 series graphics.
`getopt.scm' has posix-like getopt for parsing command line arguments.
`record.scm' a MITScheme user-definable datatypes package
`promise.scm' has code from R4RS for supporting DELAY and FORCE.
`repl.scm' has a read-eval-print-loop.
`defmacex.scm' has defmacro:expand*.
`mbe.scm' has "Macro by Example" define-syntax.
`scmacro.scm' is a syntactic closure R4RS macro package.
r4rsyn.scm, synclo.scm, synrul.scm have syntax definitions
and support.
`scmactst.scm' is code for testing SYNTACTIC CLOSURE macros.
`scainit.scm' is a syntax-case R4RS macro package.
scaglob.scm scamacr.scm scaoutp.scm scaexpp.scm have
syntax definitions and support. `syncase.sh' is a shell
script for producing the SLIB version from the original.
`macwork.scm' is a "Macros that work" package.
mwexpand.scm mwdenote.scm mwsynrul.scm have support.
mwtest.scm is tests for Macros that work.
`macrotst.scm' is code from R4RS for testing macros.
`values.scm' is multiple values.
`queue.scm' has queues and stacks.
`object.scm' is object oriented programming (using no macros).
`yasos.scm' is object oriented programming (using R4RS macros).
`collect.scm' is collection operators (like CL sequences).
`priorque.scm' has code and documentation for priority queues.
`rbtree.scm' has red-black trees.
`rbtest.scm' tests red-black trees.
`process.scm' has multi-processing primitives.
`array.scm' has multi-dimensional arrays and sub-arrays.
`arraymap.scm' has array-map!, array-for-each, and array-indexes.
`sort.scm' has sorted?, sort, sort!, merge, and merge!
`comlist.scm' has many common list and mapping procedures.
`tree.scm' has functions dealing with trees.
`sc4opt.scm' has optional rev4 procedures.
`sc4sc3.scm' has procedures to make a rev3 implementation run rev4
code.
`sc2.scm' has rev2 procedures eliminated in subsequent versions.
`sc3.scm' has rev3 procedures eliminated in subsequent versions.
`mularg.scm' redefines - and / to take more than 2 arguments.
`mulapply.scm' redefines apply to take more than 2 arguments.
`ratize.scm' has function rationalize from Revised^4 spec.
`trnscrpt.scm' has transcript-on and transcript-off from Revised^4 spec.
`withfile.scm' has with-input-from-file and with-output-to-file from R4RS.
`dynwind.scm' has proposed dynamic-wind from R5RS.
`dwindtst.scm' has routines for characterizing dynamic-wind.
`dynamic.scm' has proposed DYNAMIC data type.
`fluidlet.scm' has fluid-let syntax.
`struct.scm' has defmacros which implement RECORDS from the book:
"Essentials of Programming Languages".
`structure.scm' has syntax-case macros for the same.
`structst.scm' has test code for struct.scm and structure.scm.
INSTALLATION INSTRUCTIONS
Check the manifest to see if a configuration file for your Scheme
implementation has already been created. If so, customize it and use
it. If not, you will have to create one. Please mail new working
configuration files to jaffer@ai.mit.edu so that they can be included
in the SLIB distribution.
Template.scm is an example configuration file. The comments inside
will direct you on how to customize it to reflect your system. Your
customized version should then be loaded as part of your scheme
implementation's initialization. It will load "require.scm" from the
library; this will allow the use of PROVIDE, PROVIDED?, and REQUIRE
along with the VICINITY functions (all documented in require.doc).
The rest of the library will then be accessible in a system
independent fashion.
CODING STANDARDS
All library packages are written in IEEE P1178 Scheme and assume that
a configuration file and require.scm package have already been
loaded. Other versions of Scheme can be supported in library packages
as well by using (PROVIDED? 'REV3-REPORT) or (REQUIRE 'REV3-REPORT).
Require.scm defines *catalog*, an alist of module names and
filenames. When a new package is added to the library an entry should
be added to require.scm. Local packages can also be added to
*catalog* and even shadow entries already in the table.
The module name and `:' should prefix each symbol defined in the
package. Definitions for external use should then be exported by
having (define foo module-name:foo).
Submitted packages should not duplicate routines which are already in
SLIB files. Use REQUIRE to force those features to be supported in
your package. Care should be taken that there are no circularities in
the REQUIREs and LOADs between the library packages.
Documentation should be provided in Emacs Texinfo format if possible;
But documentation must be provided.